39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
73#define ACCEL34_REG_DEVID_AD 0x00
74#define ACCEL34_REG_DEVID_MST 0x01
75#define ACCEL34_REG_PART_ID 0x02
76#define ACCEL34_REG_PART_ID_REV_ID 0x03
77#define ACCEL34_REG_SERIAL_NUMBER_0 0x04
78#define ACCEL34_REG_SERIAL_NUMBER_1 0x05
79#define ACCEL34_REG_SERIAL_NUMBER_2 0x06
80#define ACCEL34_REG_SERIAL_NUMBER_3 0x07
81#define ACCEL34_REG_SERIAL_NUMBER_4 0x08
82#define ACCEL34_REG_SERIAL_NUMBER_5 0x09
83#define ACCEL34_REG_SERIAL_NUMBER_6 0x0A
84#define ACCEL34_REG_DEV_DELTA_Q_X 0x0B
85#define ACCEL34_REG_DEV_DELTA_Q_Y 0x0C
86#define ACCEL34_REG_DEV_DELTA_Q_Z 0x0D
87#define ACCEL34_REG_DEV_DELTA_F0_X 0x0E
88#define ACCEL34_REG_DEV_DELTA_F0_Y 0x0F
89#define ACCEL34_REG_DEV_DELTA_F0_Z 0x10
90#define ACCEL34_REG_STATUS0 0x11
91#define ACCEL34_REG_STATUS1 0x12
92#define ACCEL34_REG_STATUS2 0x13
93#define ACCEL34_REG_STATUS3 0x14
94#define ACCEL34_REG_XDATA_H 0x15
95#define ACCEL34_REG_XDATA_L 0x16
96#define ACCEL34_REG_YDATA_H 0x17
97#define ACCEL34_REG_YDATA_L 0x18
98#define ACCEL34_REG_ZDATA_H 0x19
99#define ACCEL34_REG_ZDATA_L 0x1A
100#define ACCEL34_REG_TDATA_H 0x1B
101#define ACCEL34_REG_TDATA_L 0x1C
102#define ACCEL34_REG_FIFO_DATA 0x1D
103#define ACCEL34_REG_FIFO_STATUS0 0x1E
104#define ACCEL34_REG_FIFO_STATUS1 0x1F
105#define ACCEL34_REG_MISC0 0x20
106#define ACCEL34_REG_MISC1 0x21
107#define ACCEL34_REG_SENS_DSM 0x24
108#define ACCEL34_REG_CLK_CTRL 0x25
109#define ACCEL34_REG_OP_MODE 0x26
110#define ACCEL34_REG_DIG_EN 0x27
111#define ACCEL34_REG_SAR_I2C 0x28
112#define ACCEL34_REG_NVM_CTL 0x29
113#define ACCEL34_REG_RESET 0x2A
114#define ACCEL34_REG_INT0_MAP0 0x2B
115#define ACCEL34_REG_INT0_MAP1 0x2C
116#define ACCEL34_REG_INT1_MAP0 0x2D
117#define ACCEL34_REG_INT1_MAP1 0x2E
118#define ACCEL34_REG_FIFO_CFG0 0x30
119#define ACCEL34_REG_FIFO_CFG1 0x31
120#define ACCEL34_REG_SPT_CFG0 0x32
121#define ACCEL34_REG_SPT_CFG1 0x33
122#define ACCEL34_REG_SPT_CFG2 0x34
123#define ACCEL34_REG_SYNC_CFG 0x35
124#define ACCEL34_REG_PDM_CFG 0x36
125#define ACCEL34_REG_ACT_INACT_CTL 0x37
126#define ACCEL34_REG_SNSR_AXIS_EN 0x38
127#define ACCEL34_REG_THRESH_ACT_H 0x39
128#define ACCEL34_REG_THRESH_ACT_L 0x3A
129#define ACCEL34_REG_TIME_ACT_H 0x3B
130#define ACCEL34_REG_TIME_ACT_M 0x3C
131#define ACCEL34_REG_TIME_ACT_L 0x3D
132#define ACCEL34_REG_THRESH_INACT_H 0x3E
133#define ACCEL34_REG_THRESH_INACT_L 0x3F
134#define ACCEL34_REG_TIME_INACT_H 0x40
135#define ACCEL34_REG_TIME_INACT_M 0x41
136#define ACCEL34_REG_TIME_INACT_L 0x42
137#define ACCEL34_REG_TAP_THRESH 0x43
138#define ACCEL34_REG_TAP_DUR 0x44
139#define ACCEL34_REG_TAP_LATENT 0x45
140#define ACCEL34_REG_TAP_WINDOW 0x46
141#define ACCEL34_REG_TAP_CFG 0x47
142#define ACCEL34_REG_OR_CFG 0x48
143#define ACCEL34_REG_TRIG_CFG 0x49
144#define ACCEL34_REG_X_SAR_OFFSET 0x4A
145#define ACCEL34_REG_Y_SAR_OFFSET 0x4B
146#define ACCEL34_REG_Z_SAR_OFFSET 0x4C
147#define ACCEL34_REG_X_DSM_OFFSET 0x4D
148#define ACCEL34_REG_Y_DSM_OFFSET 0x4E
149#define ACCEL34_REG_Z_DSM_OFFSET 0x4F
150#define ACCEL34_REG_FILTER 0x50
151#define ACCEL34_REG_USER_TEMP_SENS_0 0x55
152#define ACCEL34_REG_USER_TEMP_SENS_1 0x56
153#define ACCEL34_REG_MISO 0x58
154#define ACCEL34_REG_SOUT0 0x59
155#define ACCEL34_REG_MCLK 0x5A
156#define ACCEL34_REG_BCLK 0x5B
157#define ACCEL34_REG_FSYNC 0x5C
158#define ACCEL34_REG_INT0 0x5D
159#define ACCEL34_REG_INT1 0x5E
177#define ACCEL34_INTX_MAP0_NVM_BUSY 0x80
178#define ACCEL34_INTX_MAP0_INACT 0x40
179#define ACCEL34_INTX_MAP0_ACT 0x20
180#define ACCEL34_INTX_MAP0_FIFO_WATERMARK 0x08
181#define ACCEL34_INTX_MAP0_FIFO_OVERRUN 0x04
182#define ACCEL34_INTX_MAP0_FIFO_FULL 0x02
183#define ACCEL34_INTX_MAP0_DATA_RDY 0x01
184#define ACCEL34_INTX_MAP1_NVM_DONE 0x80
185#define ACCEL34_INTX_MAP1_NVM_IRQ 0x40
186#define ACCEL34_INTX_MAP1_UV_FLAG 0x20
187#define ACCEL34_INTX_MAP1_OVER_RANGE 0x10
188#define ACCEL34_INTX_MAP1_PARITY_ERR 0x08
189#define ACCEL34_INTX_MAP1_TRIPLE_TAP 0x04
190#define ACCEL34_INTX_MAP1_DOUBLE_TAP 0x02
191#define ACCEL34_INTX_MAP1_SINGLE_TAP 0x01
197#define ACCEL34_OP_MODE_RANGE_15G 0x00
198#define ACCEL34_OP_MODE_RANGE_30G 0x40
199#define ACCEL34_OP_MODE_RANGE_60G 0x80
200#define ACCEL34_OP_MODE_RANGE_MASK 0xC0
201#define ACCEL34_OP_MODE_PDM_MODE_DIS 0x00
202#define ACCEL34_OP_MODE_PDM_MODE_EN 0x20
203#define ACCEL34_OP_MODE_PDM_MODE_MASK 0x20
204#define ACCEL34_OP_MODE_AUDIO_MODE_DIS 0x00
205#define ACCEL34_OP_MODE_AUDIO_MODE_EN 0x10
206#define ACCEL34_OP_MODE_AUDIO_MODE_MASK 0x10
207#define ACCEL34_OP_MODE_STANDBY 0x00
208#define ACCEL34_OP_MODE_HEART_SOUND 0x01
209#define ACCEL34_OP_MODE_ULP 0x02
210#define ACCEL34_OP_MODE_VLP 0x03
211#define ACCEL34_OP_MODE_LP 0x04
212#define ACCEL34_OP_MODE_LP_ULP 0x06
213#define ACCEL34_OP_MODE_LP_VLP 0x07
214#define ACCEL34_OP_MODE_RBW 0x08
215#define ACCEL34_OP_MODE_RBW_ULP 0x0A
216#define ACCEL34_OP_MODE_RBW_VLP 0x0B
217#define ACCEL34_OP_MODE_HP 0x0C
218#define ACCEL34_OP_MODE_HP_ULP 0x0E
219#define ACCEL34_OP_MODE_HP_VLP 0x0F
220#define ACCEL34_OP_MODE_MASK 0x0F
226#define ACCEL34_DIG_EN_MODE_CHANNEL_EN_X 0x10
227#define ACCEL34_DIG_EN_MODE_CHANNEL_EN_Y 0x20
228#define ACCEL34_DIG_EN_MODE_CHANNEL_EN_Z 0x40
229#define ACCEL34_DIG_EN_MODE_CHANNEL_EN_TEMP 0x80
230#define ACCEL34_DIG_EN_MODE_CHANNEL_EN_ALL 0xF0
231#define ACCEL34_DIG_EN_MODE_CHANNEL_EN_MASK 0xF0
232#define ACCEL34_DIG_EN_FIFO_EN_DIS 0x00
233#define ACCEL34_DIG_EN_FIFO_EN_EN 0x08
234#define ACCEL34_DIG_EN_FIFO_EN_MASK 0x08
235#define ACCEL34_DIG_EN_INT01_EVENT_LIVE 0x00
236#define ACCEL34_DIG_EN_INT01_EVENT_EVENT 0x02
237#define ACCEL34_DIG_EN_INT01_EVENT_MASK 0x02
238#define ACCEL34_DIG_EN_PARITY_EN_DIS 0x00
239#define ACCEL34_DIG_EN_PARITY_EN_EN 0x01
240#define ACCEL34_DIG_EN_PARITY_EN_MASK 0x01
246#define ACCEL34_STATUS3_DATA_READY 0x01
252#define ACCEL34_RESET 0x02
258#define ACCEL34_DEVID_AD 0xAD
259#define ACCEL34_DEVID_MST 0x1D
265#define ACCEL34_ACCEL_FSR_15G 0
266#define ACCEL34_ACCEL_FSR_30G 1
267#define ACCEL34_ACCEL_FSR_60G 2
273#define ACCEL34_SCALE_FACTOR_LSB_PER_G 2000.0f
274#define ACCEL34_TEMP_SENS 10.2f
275#define ACCEL34_TEMP_OFFSET_LSB 295
282#define ACCEL34_DEVICE_ADDRESS_0 0x1D
283#define ACCEL34_DEVICE_ADDRESS_1 0x53
284#define ACCEL34_DEVICE_ADDRESS_2 0x54
285#define ACCEL34_DEVICE_ADDRESS_3 0x55
303#define ACCEL34_MAP_MIKROBUS( cfg, mikrobus ) \
304 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
305 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
306 cfg.int0 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
307 cfg.int1 = MIKROBUS( mikrobus, MIKROBUS_INT )
accel34_return_value_t
Accel 34 Click return value data.
Definition accel34.h:377
@ ACCEL34_OK
Definition accel34.h:378
@ ACCEL34_DATA_NOT_READY
Definition accel34.h:380
@ ACCEL34_ERROR
Definition accel34.h:379
err_t accel34_write_regs(accel34_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Accel 34 write multiple registers function.
err_t accel34_write_reg(accel34_t *ctx, uint8_t reg, uint8_t data_in)
Accel 34 write single register function.
err_t accel34_read_reg(accel34_t *ctx, uint8_t reg, uint8_t *data_out)
Accel 34 read single register function.
uint8_t accel34_get_int1_pin(accel34_t *ctx)
Accel 34 get INT1 pin state function.
err_t accel34_reset_device(accel34_t *ctx)
Accel 34 reset device function.
uint8_t accel34_get_int0_pin(accel34_t *ctx)
Accel 34 get INT0 pin state function.
void accel34_cfg_setup(accel34_cfg_t *cfg)
Accel 34 configuration object setup function.
err_t accel34_get_drdy(accel34_t *ctx, uint8_t *drdy)
Accel 34 get data ready status function.
err_t accel34_set_op_mode(accel34_t *ctx, uint8_t op_mode)
Accel 34 set operating mode function.
err_t accel34_get_temp(accel34_t *ctx, float *temp)
Accel 34 get temperature function.
err_t accel34_set_accel_fsr(accel34_t *ctx, uint8_t fsr)
Accel 34 set full-scale range function.
err_t accel34_read_regs(accel34_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Accel 34 read multiple registers function.
err_t accel34_init(accel34_t *ctx, accel34_cfg_t *cfg)
Accel 34 initialization function.
err_t accel34_check_communication(accel34_t *ctx)
Accel 34 check communication function.
err_t accel34_get_accel(accel34_t *ctx, accel34_axes_t *accel)
Accel 34 get accelerometer data function.
err_t accel34_default_cfg(accel34_t *ctx)
Accel 34 default configuration function.
err_t accel34_get_data(accel34_t *ctx, accel34_data_t *data_out)
Accel 34 get accelerometer and temperature data function.
Accel 34 Click axes data structure.
Definition accel34.h:354
float y
Definition accel34.h:356
float x
Definition accel34.h:355
float z
Definition accel34.h:357
Accel 34 Click configuration object.
Definition accel34.h:337
pin_name_t int1
Definition accel34.h:342
uint32_t i2c_speed
Definition accel34.h:344
pin_name_t int0
Definition accel34.h:341
pin_name_t scl
Definition accel34.h:338
pin_name_t sda
Definition accel34.h:339
uint8_t i2c_address
Definition accel34.h:345
Accel 34 Click data structure.
Definition accel34.h:366
accel34_axes_t accel
Definition accel34.h:367
float temperature
Definition accel34.h:368
Accel 34 Click context object.
Definition accel34.h:317
digital_in_t int0
Definition accel34.h:319
digital_in_t int1
Definition accel34.h:320
i2c_master_t i2c
Definition accel34.h:323
float accel_sens
Definition accel34.h:328
uint8_t slave_address
Definition accel34.h:326